#!/usr/bin/env python3
import os
import sys
from database.mysql_manager import db_manager

"""
MySQL连接诊断脚本
用于测试MySQL数据库连接和基本查询功能
"""

def test_mysql_connection():
    print("开始测试MySQL连接...")
    
    # 显示当前使用的MySQL配置
    print("\n当前MySQL配置:")
    print(f"- 主机: {db_manager.db_config['host']}")
    print(f"- 端口: {db_manager.db_config['port']}")
    print(f"- 用户名: {db_manager.db_config['user']}")
    print(f"- 数据库名: {db_manager.db_config['database']}")
    print(f"- 密码: {'已设置' if db_manager.db_config['password'] else '未设置'}")
    
    # 测试连接
    try:
        print("\n尝试连接到MySQL数据库...")
        if db_manager.connect():
            print("✅ MySQL数据库连接成功!")
            
            # 测试查询
            print("\n测试基本查询...")
            try:
                # 查询数据库版本
                version_result = db_manager.execute_query("SELECT VERSION() as version;")
                if version_result:
                    print(f"MySQL数据库版本: {version_result[0]['version']}")
                
                # 查询订单表是否存在
                tables_result = db_manager.execute_query("SHOW TABLES;")
                tables = [table[f'Tables_in_{db_manager.db_config['database']}'] for table in tables_result]
                print(f"\n数据库中的表: {', '.join(tables)}")
                
                # 检查orders表是否存在
                if 'orders' in tables:
                    print("✅ orders表已存在")
                    
                    # 查询订单数量
                    orders_count = db_manager.execute_query("SELECT COUNT(*) as count FROM orders;")
                    if orders_count:
                        print(f"订单数量: {orders_count[0]['count']}")
                    
                    # 查询订单详情
                    print("\n订单详情示例:")
                    sample_orders = db_manager.execute_query("""
                        SELECT id, order_no, customer_name, total_amount, status
                        FROM orders
                        LIMIT 3
                    """)
                    if sample_orders:
                        for order in sample_orders:
                            print(f"- ID: {order['id']}, 订单号: {order['order_no']}, \
                              客户: {order['customer_name']}, 总金额: {order['total_amount']}, \
                              状态: {order['status']}")
                    else:
                        print("ℹ️  orders表中暂无数据")
                else:
                    print("⚠️  orders表不存在")
                
                # 检查order_items表是否存在
                if 'order_items' in tables:
                    print("✅ order_items表已存在")
                    
                    # 查询订单项数量
                    items_count = db_manager.execute_query("SELECT COUNT(*) as count FROM order_items;")
                    if items_count:
                        print(f"订单项数量: {items_count[0]['count']}")
                else:
                    print("⚠️  order_items表不存在")
                
            except Exception as e:
                print(f"❌ 查询测试失败: {e}")
                return False
            
            # 关闭连接
            db_manager.disconnect()
            return True
        else:
            print("❌ MySQL数据库连接失败")
            return False
    except Exception as e:
        print(f"❌ 测试过程中发生异常: {e}")
        return False

def main():
    print("===== MySQL连接诊断工具 =====")
    
    # 测试MySQL连接
    if test_mysql_connection():
        print("\n✅ MySQL诊断测试通过!")
        sys.exit(0)
    else:
        print("\n❌ MySQL诊断测试失败，请检查配置和MySQL服务状态。")
        print("\n可能的解决方法:")
        print("1. 确保MySQL服务正在运行")
        print("2. 检查.env文件中的MySQL配置是否正确")
        print("3. 确保MySQL用户具有足够的权限")
        print("4. 检查防火墙设置，确保3306端口已开放")
        sys.exit(1)

if __name__ == "__main__":
    main()